<?php

/**
 * PHP函数
 */


/**
 * 生成随机字符串
 * @param int $len 生成的长度
 * @param int $isNum 是否含数字【0不含，1包含】
 */
function toRandStr($len = 6, $isNum = 1){
    if(!$isNum) {
        //纯数字
        $str = sprintf('%0' . $len . 'd', mt_rand(0, pow(10, $len) - 1));
    } else {
        //数字、字母组合
        $str = '';
        $chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghjkmnpqrstuvwxyz';
        $max = strlen($chars) - 1;
        for($i = 0; $i < $len; $i++) {
            $str .= $chars[mt_rand(0, $max)];
        }
    }
    return $str;
}


/**
 * 即时时间Y-m-d H:i:s
 */
function toDate(){
    return date('Y-m-d H:i:s');
}


/**
 * JSON转化为数组
 */
function jsonToArr($str) {
    if (is_string($str)) {
        $str = json_decode($str);
    }
    $arr = array();
    foreach($str as $k=>$v) {
        if(is_object($v) || is_array($v)) {
            $arr[$k] = $this->jsonToArr($v);
        } else {
            $arr[$k] = $v;
        }
    }
    return $arr;
}


/**
 * 显示前几个字符
 * @param string $str 显示的字符串
 * @param int $limit 显示的字符数量
 */
function strPrefix($str = '', $limit = 5){
    if (mb_strlen($str) > $limit) {
        return mb_substr($str, 0, $limit) . '...';
    } else {
        return $str;
    }
}


/**
 * 显示后几个字符
 * @param string $str 显示的字符串
 * @param int $limit 显示的字符数量
 */
function strSuffix($str = '', $limit = 5){
    if (mb_strlen($str) > $limit) {
        return '...' . mb_substr($str, - $limit);
    } else {
        return $str;
    }
}


/**
 * 获取当前IP
 */
function getClientIp(){
    $clientIPs = array();
    //检查用户是否正在使用代理服务器
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        //检查是否存在多个IP地址（可以用逗号或空格分隔）
        $proxyXFHeaders = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        foreach ($proxyXFHeaders as $proxyXFHeader) {
            $proxyXFHeader = trim($proxyXFHeader);
            if (filter_var($proxyXFHeader, FILTER_VALIDATE_IP)) {
                $clientIPs[] = $proxyXFHeader;
            }
        }
    }
    //检查用户是否正在使用代理服务器
    if (isset($_SERVER['HTTP_CLIENT_IP'])) {
        //检查是否存在多个IP地址（可以用逗号或空格分隔）
        $proxyCLIHeaders = explode(',', $_SERVER['HTTP_CLIENT_IP']);
        foreach ($proxyCLIHeaders as $proxyCLIHeader) {
            $proxyCLIHeader = trim($proxyCLIHeader);
            if (filter_var($proxyCLIHeader, FILTER_VALIDATE_IP)) {
                $clientIPs[] = $proxyCLIHeader;
            }
        }
    }
    //如果未找到其他内容，则回退到REMOTE_ADDR
    if (isset($_SERVER['REMOTE_ADDR']) && filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)) {
        $clientIPs[] = $_SERVER['REMOTE_ADDR'];
    }
    //返回阵列中最后一个有效的IP
    return end($clientIPs);
}


//生成CODE标记
function toCode(){
    return date('YmdHis') . rand(1000, 9999);
}


//显示价格
function toNumber($v){
    return round(($v / 100), 2);
}


//自定义打印
function ddd($e1, $e2 = '', $e3 = ''){
    echo '<pre>';
    var_dump($e1);
    if ($e2) var_dump($e2);
    if ($e3) var_dump($e3);
    exit;
}